驗證使用者最常見的方式就是檢查使用者在系統中的帳號與密碼,然而這樣的驗證方式在安全性方面來說相對薄弱,因為一旦密碼被竊取,那麼各種敏感的資料就會暴露出來。
因此在稍微注重安全性的系統當中,就會採用比較安全的驗證方式
在密碼之外,有些驗證方式是相對安全的,譬如 OTP (One-Time Password)。
OTP 是一種只會存在在很短的時間、只會使用一次的密碼,通常由系統發送到使用者的手機或信箱當中,或者是透過其他的軟體、硬體生成。OTP 之所以相對安全的原因是,它的續存時間相對較短,而且並非固定不變,因此大幅減少被竊取的機會。
另外生物識別也是相對安全,譬如指紋、虹膜辨識等驗證方式。
系統為了加強安全性,有時會要求使用兩種以上的驗證方式。這樣做的好處是避免單一驗證方式被破解的風險,兩種以上的驗證方式同時被破解的機率相對較低。
還記得先前提到的驗證方式主要分三種:
因此除了最基本的密碼之外,系統可能會額外要求不同的驗證方式,譬如 OTP 或是指紋辨識等。
MFA 雖然看起來萬無一失,但是使用者每次登入系統的時候都要走過 MFA 流程,不見得是最好的使用者體驗。如果我們能夠讓使用者先進入系統進行基本的活動,然後在遇到比較重要或敏感的活動時,再次驗證使用者的身份,也許就會是比較有效率、且體驗較好的做法。
舉例來說,使用者可以透過密碼通過驗證、登入系統,然後瀏覽資訊,但如果使用者想要更新個人資訊,在送出請求時,系統會跳出提示視窗,並要求使用者進行額外的驗證(常見的方式像是 OTP),如此一來,就可以確保重要的活動(譬如更新個人資訊)可以受到較高的保護。
在先前提到的 ID Token,當中有個內容為
所以在剛剛提到的例子當中,使用者最初透過密碼登入系統之後,舉例來說這時的 acr 會是 level 1,而當通過 Step Up Authentication 流程之後,這時在 ID Token 當中的 acr 就會「升級」(step up) 為 level 2,因此拿到 ID Token 的 Client
就會知道使用者已經 step up 了,可以進行原本被限制的活動。
同時,系統也會希望 level 2 的續存時間是有限制的,讓 token 暴露在外的機會降低,因此可能會採取 timeout 或是 step down 的機制,讓使用者不會一直處在「擁有更多權限」的狀態。